 // 把获取json 数据转化为请求参数
 function getURLSearchParams(json){
    if(!json) return ''     // 再没有值的情况下返回 ''
    const dataArray = Object.keys(json).map(key=> {
        if(json[key] === undefined) return '';
        return  encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
    })
    console.log(dataArray)
    return dataArray.filter(item => item !== undefined && item !== null).join('&');
  }
//   console.log(getURLSearchParams({name:'123',age:'',title:"heheda"}))

  // 去掉前后空格
  function trim(string){
    return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '')
  }
//  console.log( trim('    000    000     '))

// 正则转化 css 前缀变为驼峰式写法
// const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
// const MOZ_HACK_REGEXP = /^moz([A-Z])/;
// function camelCase(name) {
//     return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
//       return offset ? letter.toUpperCase() : letter;
//     }).replace(MOZ_HACK_REGEXP, 'Moz$1');   // -moz 除外直接替换首字母也是大写
//   };

//   console.log(camelCase("-webkit-transition"))
//   console.log(camelCase('-moz-transition'))
//   console.log(camelCase('-ms-transition'))
//   console.log(camelCase('-o-transition'))
//   console.log(camelCase('::after'))
//   console.log(camelCase('__after'))

// 获取hasClass
// function hasClass(el, cls) {
//     if(!el || !cls) return false
//     if (cls.indexOf(' ') !== -1) {throw new Error('className should not contain space.')};
//     if (el.classList) {
//         return el.classList.contains(cls);
//       } else {
//         return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
//       }
// }
// console.log(hasClass(' ',' '))

// 判断数据类型的几种方式
/** 文章的参考 https://www.cnblogs.com/onepixel/p/5126046.html
 * typeof   基本数据类型
 * instanceof 判断两个对象是否属于实例关系，不能判断数据类型。
 * constructor 当一个函数被定义的时候，js 引擎会为函数添加prototype原型，然后再在原型上添加一个constructor,并让其指向函数的引用，null 和undefined 是无效的对象，所以没有constructor。不能用这个判断
 * 
 * Object.prototype.toString()
 * */
// console.log([1,2,3] instanceof Array) 
// console.log('123' instanceof String)

// console.log(''.constructor === String)
// console.log([1,2,3].constructor === Array)

// console.log(
// Object.prototype.toString.call('')+";\n"+   // [object String]
// Object.prototype.toString.call(1)+";\n"+    // [object Number]
// Object.prototype.toString.call(true) +";\n"+ // [object Boolean]
// Object.prototype.toString.call(Symbol())+";\n"+ //[object Symbol]
// Object.prototype.toString.call(undefined) +";\n"+ // [object Undefined]
// Object.prototype.toString.call(null) +";\n"+ // [object Null]
// Object.prototype.toString.call(new Function()) +";\n"+ // [object Function]
// Object.prototype.toString.call(new Date()) +";\n"+ // [object Date]
// Object.prototype.toString.call([]) +";\n"+// [object Array]
// Object.prototype.toString.call(new RegExp()) +";\n"+ // [object RegExp]
// Object.prototype.toString.call(new Error()) +";\n"// [object Error]
// )
// Object.prototype.toString.call(document) ; // [object HTMLDocument]
// Object.prototype.toString.call(window) ; //[object global] window 是全局对象 global 的引用

// 封装判断的函数
// function getType(name){
//     var type = typeof name
//     if(type !== 'object'){
//         return type
//     }
//     return Object.prototype.toString.call(name).replace(/^\[object (\S+)\]$/,'$1');
// }
// console.log(getType([1,2,3]))

// var preservedScriptAttributes = {
//   type: true,
//   src: true,
//   nonce: true,
//   noModule: true
// };
// var node= "<script ></script>"
// for(i in preservedScriptAttributes){
//   // console.log(i)
//   if(node){
//     val = node[ i ] || node.getAttribute && node.getAttribute( i );
// 				if ( val ) {
// 					script.setAttribute( i, val );
// 				}
//     console.log(node)
//   }
// }

let class2type = {}
function toType(obj){
  
  if(obj == null){
    return obj + ''
  }
  return typeof obj === "object" || typeof obj === "function" ?
		class2type[ toString.call( obj ) ] || "object" :
		typeof obj;
}
// let _obj = { name:"zaike" }
// console.log(toType(_obj))
// console.log(toType(true))

 let jquery=require('./jquery')

console.log({jquery})